package com.kmis.services;


import com.kmis.entities.User;
import com.kmis.vo.UserVo;
import com.kmis.web.ApiResult;
import com.mybatisflex.core.service.IService;
import org.springframework.dao.DataAccessException;

/**
 * 用户服务层。
 *
 * @author MLB
 * @since 1.0
 */
public interface IUserService extends IService<User> {

    /**
     * 根据用户名查找用户
     * @param username 用户名
     * @return
     */
    UserVo getByUserName(String username);

    /**
     * 查询所有用户
     * @return 返回所有用户对象
     */
    ApiResult selectAllUsers();

    /**
     * 新增用户
     * @param user 用户传递的新增对象
     * @return 成功返回信息，失败返回错误信息
     */
    ApiResult insertUser(User user) throws DataAccessException;

    /**
     * 根据id删除用户
     * @param id 当前删除的用户id(主键)
     * @return 成功返回成功信息，失败返回错误信息
     */
    ApiResult removeUserById(Integer id);

    /**
     * 修改用户，需要传过来的用户对象携带用户id
     * @param user 前端返回的用户对象
     * @return 成功返回成功信息，失败返回错误信息
     */
    ApiResult updateUser(User user);


    /**
     * 分页查询
     * @param pageNumber 当前页数
     * @param pageSize 每页最大记录
     * @return 分页对象，记录总数，当前页数，每页最大记录数
     */
    ApiResult page(Integer pageNumber,Integer pageSize);


    ApiResult search(String nickname,String phone,String status, int pageNumber,int pageSize);

}